package staticRoutes

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"mime"
	"net/http"
	"os"
	"strings"
)

// SetupStaticRoutes 静态路由
// 静态路由不需要权限验证，直接访问即可
func SetupStaticRoutes(r *gin.Engine) {
	//dataScopeMiddleware:
	result := func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{"code": http.StatusOK, "success": "成功响应"})
	}
	r.GET("/health", result)
}

// EndNoRoute   404处理 静态文件处理
func EndNoRoute(r *gin.Engine) {

	r.NoRoute(func(c *gin.Context) {
		path := c.Request.URL.Path // 获取请求路径
		s := strings.Split(path, ".")
		// 分割路径，获取文件后缀
		prefix := "./dist"
		if data, err := os.ReadFile(prefix + path); err != nil { // 读取文件内容
			// 如果文件不存在，返回首页 index.html
			if data, err = os.ReadFile(prefix + "/index.html"); err != nil {
				c.JSON(404, gin.H{
					"err": err,
				})
			} else {
				c.Data(200, mime.TypeByExtension(fmt.Sprintf(".%s", s[len(s)-1])), data)
			}
		} else {
			// 如果文件存在，根据请求的文件后缀，设置正确的mime type，并返回文件内容
			c.Data(200, mime.TypeByExtension(fmt.Sprintf(".%s", s[len(s)-1])), data)
		}

		//以下是embed的处理策略
		//if data, err := caipu.Static.ReadFile(prefix + path); err != nil { // 读取文件内容
		//	// 如果文件不存在，返回首页 index.html
		//	if data, err = caipu.Static.ReadFile(prefix + "/index.html"); err != nil {
		//		c.JSON(404, gin.H{
		//			"err": err,
		//		})
		//	} else {
		//		c.Data(200, mime.TypeByExtension(fmt.Sprintf(".%s", s[len(s)-1])), data)
		//	}
		//} else {
		//	// 如果文件存在，根据请求的文件后缀，设置正确的mime type，并返回文件内容
		//	c.Data(200, mime.TypeByExtension(fmt.Sprintf(".%s", s[len(s)-1])), data)
		//}
	})
}
